/*
 *  Map.h
 *  glow
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __Map__
#define __Map__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Engine)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented Map interface.
	class Map : public GReference
	{
	public:
		// constructor
		Map();

		// destructor
		virtual ~Map();

		// load the data
		virtual VOID Load(const GData* data);

		// update the map
		virtual VOID Update(const Vector4& viewport);

		// draw the map
		virtual VOID Draw(Graph *gc);

	public:
		I32	mWidth, mHeight;
		I32 mViewport[4];
		std::map< std::pair<I32,I32>, ChunkPtr >mChunks;
	};

	//////////////////////////////////////////////////////////////////////////

	typedef GPtr<class Map>MapPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Map__

//////////////////////////////////////////////////////////////////////////